#list(内建列表类) dict(内建字典类) str(内建字符串类)
'''
get不会报错无论如何也不会触发__getitem__魔法方法
print()都会触发__getitem__魔法方法
'''
class MyList(list):
    #利用list内建类,有一个可变参数的传入
    def __init__(self,*args):
        self.count=0
        super(MyList, self).__init__(*args)
    def __getitem__(self, item):
        self.count+=1
        return super(MyList, self).__getitem__(item)


#ml=MyList(('老刘','老张'))

ml=MyList(range(1,21))
print(ml[0])
print(ml)
print('调用了%s次'%ml.count)#ml[0] 一次
print('删除第3项')
del ml[2]
print(ml)
print('开始获取第5项')
print(ml[5])
print(ml[6])

print('调用了',ml.count)# ml[0],ml[5],ml[6] 三次
#可变参数的实现
def aaa(*p):
    print(p)
aaa('老刘','老张')




class MuDict(dict):
    def __init__(self,*args):
        super(MuDict, self).__init__(*args)

md=MuDict({'a':'老刘','b':'老张'})
print(md['a'])
print(md.get('c'))#None
print(md['c'])#报错
'''
get不会报错无论如何也不会触发__getitem__魔法方法
print()都会触发__getitem__魔法方法
'''



